// base64转码（压缩完成后的图片为base64编码，这个方法可以将base64编码转回file文件）
function dataURLtoFile(dataurl) {
    var arr = dataurl.split(',')
    var mime = arr[0].match(/:(.*?);/)[1]
    var bstr = atob(arr[1])
    var n = bstr.length
    var u8arr = new Uint8Array(n)
    while (n--) {
        u8arr[n] = bstr.charCodeAt(n)
    }
    return new File([u8arr], { type: mime })
}
// 压缩图片
function compressImg(file) {
    var files
    var fileSize = parseFloat(parseInt(file['size']) / 1024 / 1024).toFixed(2)

    var read = new FileReader()
    read.readAsDataURL(file)
    return new Promise(function(resolve) {
        read.onload = function(e) {
            var img = new Image()
            img.src = e.target.result
            img.onload = function() {
                // 默认按比例压缩
                var w = this.width
                var h = this.height
                var scale = w / h

                // 生成canvas
                var canvas = document.createElement('canvas')
                var ctx = canvas.getContext('2d')
                var base64

                if (w > 2000 || h > 2000) {
                    if (scale > 1) {
                        console.log('横图')
                        // 横图
                        w = 1500
                        h = w / scale
                    } else {
                        console.log('竖图')
                        // 竖图
                        h = 1500
                        w = h * scale
                    }
                    canvas.setAttribute('width', w)
                    canvas.setAttribute('height', h)
                    ctx.drawImage(this, 0, 0, w, h)
                    base64 = canvas.toDataURL(file['type'], 0.7)
                } else {
                    // 创建属性节点
                    canvas.setAttribute('width', w)
                    canvas.setAttribute('height', h)
                    ctx.drawImage(this, 0, 0, w, h)
                    if (fileSize > 10) {
                        // 如果图片大于10兆 那么压缩0.4
                        base64 = canvas.toDataURL(file['type'], 0.4)
                    } else if (fileSize > 8) {
                        // 如果图片大于8兆 那么压缩0.5
                        base64 = canvas.toDataURL(file['type'], 0.5)
                    } else if (fileSize > 8) {
                        // 如果图片大于8兆 那么压缩0.6
                        base64 = canvas.toDataURL(file['type'], 0.6)
                    } else if (fileSize > 6) {
                        // 如果图片大于6兆 那么压缩0.7
                        base64 = canvas.toDataURL(file['type'], 0.7)
                    } else if (fileSize > 4) {
                        // 如果图片大于4兆 那么压缩0.8
                        base64 = canvas.toDataURL(file['type'], 0.8)
                    } else if (fileSize > 2) {
                        // 如果图片大于2兆 那么压缩0.9
                        base64 = canvas.toDataURL(file['type'], 0.9)
                    } else {
                        // 图片小于2M不压缩
                        base64 = canvas.toDataURL(file['type'], 1)
                    }
                }
                // 回调函数返回file的值（将base64编码转成file）
                files = dataURLtoFile(base64) // 如果后台接收类型为base64的话这一步可以省略

                resolve(files)
            }
        }
    })
}
// 结尾处将该方法暴露出来供外部调用
export default {
    compressImg
}
